﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Working.UI.Windows.Forms;

namespace Working.Protótipos
{
  public partial class MainForm: Form
  {
    public MainForm()
    {
      InitializeComponent();
    }

    private void ShowNewForm(object sender, EventArgs e)
    {
      Form childForm = CreateChildForm(typeof(Form));
      childForm.Text = "New Window";
      childForm.Show();
    }

    private void OpenFile(object sender, EventArgs e)
    {
      OpenFileDialog openFileDialog = new OpenFileDialog();
      openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
      openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
      if(openFileDialog.ShowDialog(this) == DialogResult.OK)
      {
        string FileName = openFileDialog.FileName;
      }
    }

    private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
    {
      SaveFileDialog saveFileDialog = new SaveFileDialog();
      saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
      saveFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
      if(saveFileDialog.ShowDialog(this) == DialogResult.OK)
      {
        string FileName = saveFileDialog.FileName;
      }
    }

    private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
    {
      this.Close();
    }

    private void CutToolStripMenuItem_Click(object sender, EventArgs e)
    {
    }

    private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
    {
    }

    private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
    {
    }

    private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)
    {
      toolStrip.Visible = toolBarToolStripMenuItem.Checked;
    }

    private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)
    {
      statusStrip.Visible = statusBarToolStripMenuItem.Checked;
    }

    private void CascadeToolStripMenuItem_Click(object sender, EventArgs e)
    {
      LayoutMdi(MdiLayout.Cascade);
    }

    private void TileVerticalToolStripMenuItem_Click(object sender, EventArgs e)
    {
      LayoutMdi(MdiLayout.TileVertical);
    }

    private void TileHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
    {
      LayoutMdi(MdiLayout.TileHorizontal);
    }

    private void ArrangeIconsToolStripMenuItem_Click(object sender, EventArgs e)
    {
      LayoutMdi(MdiLayout.ArrangeIcons);
    }

    private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
    {
      foreach(Form childForm in MdiChildren)
      {
        childForm.Close();
      }
    }

    private Form CreateChildForm(Type formType)
    {
      Form childForm = null;
      if(formType != null)
      {
        if(formType == typeof(Form) || formType.IsSubclassOf(typeof(Form)))
        {
          childForm = (Form)Activator.CreateInstance(formType);
          childForm.MdiParent = this;
          childForm.FormClosed += new FormClosedEventHandler(ChildFormClosed);
          childForm.Activated += new EventHandler(ChildFormActivated);
          childForm.WindowState = FormWindowState.Maximized;
        }
      }
      return childForm;
    }

    private void editFormToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Form form = CreateChildForm(typeof(ProtótipoEditForm));
      form.Show();
    }

    private void ChildFormClosed(object sender, FormClosedEventArgs e)
    {
      this.mainToolStrip.Visible = ((this.MdiChildren.Length - 1) == 0);
      this.Refresh();
    }

    private void ChildFormActivated(object sender, EventArgs e)
    {
      this.mainToolStrip.Visible = (this.MdiChildren.Length == 0);
      this.Refresh();
    }

    private void toolStripLabel2_Click(object sender, EventArgs e)
    {
      
    }
  }
}
